import LocalData from "@/common/local_data";
import DateUtils from "@/utils/date_utils";
import NumberUtils from "@/utils/number_utils";

export default class ShowUtils {
  //获取图片，如果没有定义就返回默认值
  static getImage(image: any, defaultImage: string = 'https://liteav.sdk.qcloud.com/app/res/picture/voiceroom/avatar/user_avatar1.png'): string {
    if (image) {
      return `${image}`;
    } else {
      return defaultImage;
    }
  }

  //如果获取的为null给一个默认值
  static getDefault(data: any, defaultValue: string = '---') {
    if (data && data !== '') {
      return `${data}`;
    } else {
      return defaultValue;
    }
  }

  static showName(username, realName) {
    //如果realName不为空就返回realName，否则返回username
    if (realName) {
      return `${realName}`;
    }
    return this.getDefault(username);
  }

  static getShowTime(inputDateTimeString: string | null | undefined) {
    if (!inputDateTimeString || inputDateTimeString.trim() === "") {
      console.warn("输入字符串为空或无效。");
      return null;
    }
    const dateTimeParts = inputDateTimeString
      .split(',')
      .map(s => s.trim())
      .filter(s => s.length > 0);

    const showTimes = dateTimeParts[0]

    return `${showTimes}开始，共${dateTimeParts.length / 2}小时`;

  }


  //

  static getShowNote(value: string | null | undefined) {
    //如果为空就""
    if (value) {
      return `(${value})`;
    } else {
      return ''
    }
  }

  static getFirstParagraphContentRegex(htmlString: string): string | null {
    if (!htmlString) {
      return null;
    }
    // 1. 创建一个临时的div元素来解析HTML
    const match = htmlString.match(/<[^>]*>([^<>\s]+)<\/[^>]*>/);
    return match ? match[1] : null;
  }


  /// type 0 用户充值 1 组充值 2 支付
  static getPayType(type: number) {
    if (type === 0) {
      return '个人充值';
    } else if (type === 1) {
      return '组充值';
    } else if (type === 2) {
      return '支付';
    } else {
      return '未知';
    }
  }

  static getPayWay(type: number | null | undefined) {
    if (type === 0) {
      return '个人余额';
    } else if (type === 1) {
      return '组余额';
    } else if (type === 2) {
      return '微信支付';
    } else {
      return '未知';
    }
  }

  static getInvoiceType(type: number) {
    if (type === 1) {
      return '专票（电子）';
    } else if (type === 0) {
      return '普票（电子）';
    } else {
      return '普票（电子） ';
    }
  }

  static getFileType(type: string | null) {
    //有可能type是null，所以要判断一下
    if (!type) {
      return '无';
    }
    //有可能字符串中带有，所以要分割一下
    const valueArray = type.split(',');
    //有可能type是null，所以要判断一下
    if (valueArray.length === 0) {
      return '无';
    }
    return LocalData.needContent
      .filter(item => valueArray.includes(item.value))
      .map(item => item.label)
      .join(',');
  }

  /**
   * 检查 teamId 是否有效。
   * 有效的 teamId：
   * - 不是 null 或 undefined
   * - 如果是字符串，trim后不能为空字符串，并且转换为数字后大于0
   * - 如果是数字，必须大于0
   *
   * @param teamId 要检查的 teamId，可以是 string, number, null, 或 undefined
   * @returns 如果 teamId 有效则返回 true，否则返回 false
   */
  static isValidTeamId(teamId: string | number | null | undefined): boolean {
    // 1. 检查 null 或 undefined
    if (teamId === null || typeof teamId === 'undefined') {
      return false;
    }

    // 2. 处理字符串类型
    if (typeof teamId === 'string') {
      const trimmedTeamId = teamId.trim();
      // 如果 trim 后是空字符串，则无效
      if (trimmedTeamId === '') {
        return false;
      }
      // 尝试将字符串转换为数字
      const numericTeamId = parseFloat(trimmedTeamId);
      // 如果转换失败 (NaN) 或数字小于等于0，则无效
      return !(isNaN(numericTeamId) || numericTeamId <= 0);
      // 字符串有效
    }

    // 3. 处理数字类型 (此时 teamId 肯定是 number 类型)
    // 如果数字小于等于0，则无效
    return teamId > 0;

  }

  static getDefaultPrice(data: any, defaultValue: string = LocalData.defaultPrice) {
    if (data) {
      return `¥${NumberUtils.stringToNumber(data)}`;
    } else {
      return defaultValue;
    }
  }

  static getImageUrl(data: String) {
    //http://118.193.103.197:8080/
    //如果包括118.193.103.197:8080就替换成baseUrl
    if (data.includes('118.193.103.197:8080')) {
      return data.replace('http://118.193.103.197:8080', LocalData.baseUrl);
    } else {
      return data
    }
  }

  static getDateByString(dateTimeString: string) {
    const date = new Date(dateTimeString);
// 获取时区偏移量（分钟）
    const offset = date.getTimezoneOffset() * 60000;
// 加上时区偏移量
    const localDate = new Date(date.getTime() - offset);
    return localDate.toISOString().split('T')[0];
  }

}
